package controller

import (
	"fmt"
	"gin-c/app/middleware"
	"gin-c/app/model"
	"gin-c/app/validator"
	"github.com/gin-gonic/gin"
)

type index struct {
	Method_     []string          // 支持的方法
	Middleware_ []gin.HandlerFunc // 中间件
}

var Index *index

func init() {
	Index = &index{
		Method_:     []string{"GET", "POST"},
		Middleware_: []gin.HandlerFunc{middleware.IsLogin([]string{"Index2"})},
	}
}

func (i index) Index(c *gin.Context) {
	c.JSON(200, gin.H{
		"code": 200,
		"msg":  fmt.Sprintf("你访问的是 %s 是%v请求", c.Request.URL.Path, c.Request.Method),
		"data": "",
	})
}

func (i index) Index2(c *gin.Context) {
	// panic([]any{7000, "我拒绝的你"})

	// va, err := yoyoorm.Cache.Get("yoyo")
	// if err != nil {
	// 	panic([]any{7000, err.Error()})
	// }

	//va, err := yoyoorm.Cache.Ttl("yoyo")
	//if err != nil {
	//	panic([]any{7000, err.Error()})
	//}
	// err1 := yoyoorm.Cache.Set("yoyo", "嘻嘻嘻嘻", &buntdb.SetOptions{
	// 	Expires: true,
	// 	TTL:     time.Hour * 2,
	// })
	// if err1 != nil {
	// 	panic([]any{7000, err1.Error()})
	// }
	//fmt.Println(int(va.Seconds()))
	result, merr := model.Index.GetUserInfo(1)
	if merr != nil {
		panic([]any{7001, merr.Error()})
	}

	fmt.Println(result)

	c.JSON(200, gin.H{
		"code": 200,
		"msg":  fmt.Sprintf("你访问的是 %s 是%v请求", c.Request.URL.Path, c.Request.Method),
		"data": gin.H{ // 这里是返回的数据
			"name": "张三",
			"age":  18,
		},
	})
}

// 登录加了字段验证
func (i index) Login(c *gin.Context) {
	reqData := &validator.IndexLoginData{}
	err := c.ShouldBind(reqData) //验证body字段
	if err != nil {
		panic([]any{7000, err.Error()})
	}

	c.JSON(200, gin.H{
		"code": 200,
		"msg":  fmt.Sprintf("你访问的是 %s 是%v请求", c.Request.URL.Path, c.Request.Method),
		"data": reqData,
	})
}
